package struts2.sample06.action;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.config.Result;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import struts2.sample06.mapping.Employee;


/**
 * employeesテーブルからデータを全件取得するアクション
 */
@Result("hibernate.jsp")
public class HibernateAction {

	/** hibernateのセッションファクトリー */
	private SessionFactory sessionFactory;
	
	/** 従業員のリスト（検索結果） */
	private List<Employee> employees;


	/**
	 * アクション実行メソッド
	 */
	@SuppressWarnings("unchecked")
	public String execute() throws SQLException {
		employees = new ArrayList<Employee>();
		
		// hibernateのセッションを利用して
		// 従業員データを全件取得する。
		Session s = sessionFactory.openSession();
		List<Employee> result = s.createCriteria(Employee.class	).list();
		
		// 取得したデータを全部メンバー変数に突っ込む。
		employees.addAll(result);
		
		return "success";
	}


	//
	// setterとgetter
	//
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public List<Employee> getEmployees() {
		return employees;
	}

}
